// 加载mysql模块
const mysql = require("mysql");
// 创建数据库连接池
const pool = mysql.createPool({
  host: "127.0.0.1",
  // port可省略
  port: 3306,
  user: "root",
  password: "",
  database: "bestMobile",
  charset: "utf8",
  // 支持的最大连接数
  connectionLimit: 20,
});
// 引入express模块
const express = require("express");
// 创建express对象
const server = express();
// 引入cors模块
const cors = require("cors");
// 使用cors模块,解决跨域问题
server.use(
  cors({
    origin: ["http://127.0.0.1:8080", "http://localhost:8080"],
  })
);
// 加载body-parser中间件
const bodyParser = require("body-parser");
// 使用body-parser中间件
server.use(
  bodyParser.urlencoded({
    extended: false,
  })
);
// 监听端口
server.listen(3000, () => {
  console.log(`server is running...`);
});

// 创建用户注册的路由
server.post("/register", (req, res) => {
  // 1.获取路由传过来的用户名和密码
  let username = req.body.username;
  let password = req.body.password;
  // 2.以用户名作为条件进行查询
  let sql = "select uid,uname from mb_user where uname=?";
  pool.query(sql, [username], (err, results) => {
    if (err) throw err;
    if (results.length == 0) {
      // 3.如果没有找到,则将信息录入数据库(还需要注意将密码变成md5的结果)
      sql = "INSERT INTO mb_user(uname,upwd) VALUE(?,MD5(?))";
      pool.query(sql, [username, password], (err, results) => {
        if (err) throw err;
        res.send({ message: "注册成功!", code: 1 });
      });
    } else {
      // 4.如果找到,则直接响应返回错误信息
      res.send({ message: "用户名已经存在", code: 0 });
    }
  });
});

// 创建用户登录路由
server.post("/login", (req, res) => {
  // 1. 获取用户传过来的用户名及密码
  let uname = req.body.uname;
  let upwd = req.body.upwd;
  // 2. 以用户名作为条件查询
  let sql = "select uid,uname from mb_user where uname=? and upwd=MD5(?)";
  pool.query(sql, [uname, upwd], (err, result) => {
    if (err) throw err;
    if (result.length == 0) {
      res.send({ message: "登录失败", code: 0 });
    } else {
      res.send({ message: "登录成功!", code: 1 });
    }
  });
});

// 获取不同品牌的所有手机
server.get("/phone", (req, res) => {
  let categoryId = req.query.categoryid;
  let sql = "select * from mobile_laptop where categoryId=?";
  pool.query(sql, [categoryId], (err, result) => {
    if (err) throw err;
    res.send({ code: 200, message: "查询成功", result: result });
  });
});

// // 创建路由
// // 创建获取文章分类的路由
// server.get("/category", (req, res) => {
//   let sql = "select id,category_name from xzqa_category";
//   pool.query(sql, (err, results) => {
//     if (err) throw err;
//     res.send({ message: "查询成功", code: 1, results: results });
//   });
// });
// // 创建获取文章信息的路由
// server.get("/articles", (req, res) => {
//   // 接收文章分类ID
//   let cid = req.query.cid;
//   // 接收当前页码
//   let page = req.query.page;
//   // 定义一个变量来存放每页显示的数据量
//   let pagesize = 20;
//   // 计算从第几条数据开始拿
//   let offset = (page - 1) * pagesize;
//   // 统计某分类下包含的文章总数
//   let sql = "SELECT COUNT(id) AS count FROM xzqa_article WHERE category_id = ?";
//   pool.query(sql, [cid], (err, results) => {
//     if (err) throw err;
//     // 用一个变量rowcount保存某一分类的文章总数
//     let rowcount = results[0].count;
//     // 用一个变量pagecount保存某一分类的总页数,并向上取整
//     let pagecount = Math.ceil(rowcount / pagesize);
//     // console.log(pagecount);
//     sql =
//       "SELECT id,subject,description,image FROM xzqa_article WHERE category_id=? limit " +
//       offset +
//       "," +
//       pagesize;
//     pool.query(sql, [cid], (err, results) => {
//       if (err) throw err;
//       res.send({
//         message: "查询成功",
//         code: 1,
//         results: results,
//         pagecount: pagecount,
//       });
//     });
//   });
// });

// // 创建获取某篇文章详细信息的路由
// server.get("/article", (req, res) => {
//   let id = req.query.id;
//   // 多表连接查询
//   let sql =
//     "SELECT r.id,subject,content,created_at,nickname,avatar,article_number FROM xzqa_article AS r INNER JOIN xzqa_author AS u ON author_id = u.id WHERE r.id=?";
//   pool.query(sql, [id], (err, results) => {
//     if (err) throw err;
//     res.send({ message: "查询成功!", code: 1, result: results[0] });
//   });
// });
